package com.xuecheng.test.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.springframework.core.CollectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer01 {
    //创建队列名称
    private static final  String QUEUE="hello";

    public static void main(String[] args) {
        ConnectionFactory connectionFactory=null;
        Connection connection=null;
        Channel channel=null;
        try {
        //创建连接
        connectionFactory = new ConnectionFactory();
        //连接mq
        connectionFactory.setHost("localhost");
        //设置mq端口
        connectionFactory.setPort(5672);
        //设置用户密码
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        //设置服务器地址
        connectionFactory.setVirtualHost("/");
        //创建与mq的tcp连接
         connection = connectionFactory.newConnection();
         //创建通道
          channel = connection.createChannel();
          //声明队列
            /*
            * 参数列表
            * 1.队列名称
            * 2.是否持久化
            * 3.队列是否独占此连接
            * 4.队列不再使用时是否删除此队列
            * 队列参数
            * */
            channel.queueDeclare(QUEUE,true,false,false,null);
            //编写发送消息
            String message="你好世界"+System.currentTimeMillis();
            //发送消息
            /*
            * 参数列表
            * 1.交换机名称（Exchange），如果没有指定，则使用Default Exchange
            * 2.routingKey,消息的路由Key，是用于Exchange（交换机）将消息转发到指定的消息队列
            * 3.消息包含的属性
            * 4.消息体
            * 这里没有指定交换机，消息将发送给默认交换机，每个队列也会绑定那个默认的交换机，但是不能显
              示绑定或解除绑定
              */
            channel.basicPublish("",QUEUE,null,message.getBytes("utf-8"));
            System.out.println("send message is:"+message+",");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }
    }
}
